]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Search: use the same settings object for loading search providers
authorGiovanni Campagna <gcampagna@gnome.org>
Fri, 20 Mar 2015 06:58:19 +0000 (23:58 -0700)
committerGiovanni Campagna <gcampagna@gnome.org>
Fri, 27 Mar 2015 20:11:22 +0000 (13:11 -0700)
In recent glib, change notifications don't actually happen unless all
keys have been read, in an effort to reduce unnecessary dbus
traffic for shortlived GSettings object and avoid AddMatch calls.
But we care about changes here, so we need to make sure we're
subscribed, and an easy way to do so is to reuse the same object
to watch for changes and to load the active providers at startup.

https://bugzilla.gnome.org/show_bug.cgi?id=746509

js/ui/remoteSearch.js
js/ui/search.js

index 4fc5000b8f261977fa74093e62fe3f1130cd59f6..efe6bc28d874d951d938c3a9f5f0525a1707c94b 100644 (file)
@@ -63,7 +63,7 @@ const SearchProvider2Iface = '<node> \
 var SearchProviderProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProviderIface);
 var SearchProvider2ProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProvider2Iface);
 
-function loadRemoteSearchProviders(callback) {
+function loadRemoteSearchProviders(searchSettings, callback) {
     let objectPaths = {};
     let loadedProviders = [];
 
@@ -124,7 +124,6 @@ function loadRemoteSearchProviders(callback) {
         }
     }
 
-    let searchSettings = new Gio.Settings({ schema_id: Search.SEARCH_PROVIDERS_SCHEMA });
     if (searchSettings.get_boolean('disable-external')) {
         callback([]);
         return;
index d4468f3c77087f440733fcbc632e45215f0e67c0..2ea1afb62e320b532b0ad4c3f5ada822160419e5 100644 (file)
@@ -435,7 +435,7 @@ const SearchResults = new Lang.Class({
             this._unregisterProvider(provider);
         }));
 
-        RemoteSearch.loadRemoteSearchProviders(Lang.bind(this, function(providers) {
+        RemoteSearch.loadRemoteSearchProviders(this._searchSettings, Lang.bind(this, function(providers) {
             providers.forEach(Lang.bind(this, this._registerProvider));
         }));
     },